home *** CD-ROM | disk | FTP | other *** search
/ Aminet 41 / Aminet 41 (2001)(Schatztruhe)[!][Feb 2001].iso / Aminet / dev / c / libiconv_src.lha / src / mac_hebrew.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-11-07  |  4.3 KB  |  114 lines

  1.  
  2. /*
  3.  * MacHebrew
  4.  */
  5.  
  6. static const unsigned short mac_hebrew_2uni[128] = {
  7.   /* 0x80 */
  8.   0x00c4, 0xfb1f, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1,
  9.   0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8,
  10.   /* 0x90 */
  11.   0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3,
  12.   0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc,
  13.   /* 0xa0 */
  14.   0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x20aa, 0xfffd,
  15.   0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
  16.   /* 0xb0 */
  17.   0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
  18.   0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
  19.   /* 0xc0 */
  20.   0xfffd, 0x201e, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x05bc, 0xfb4b,
  21.   0xfb35, 0x2026, 0x00a0, 0x05b8, 0x05b7, 0x05b5, 0x05b6, 0x05b4,
  22.   /* 0xd0 */
  23.   0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0xfb2a, 0xfb2b,
  24.   0x05bf, 0x05b0, 0x05b2, 0x05b1, 0x05bb, 0x05b9, 0xfffd, 0x05b3,
  25.   /* 0xe0 */
  26.   0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7,
  27.   0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df,
  28.   /* 0xf0 */
  29.   0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7,
  30.   0x05e8, 0x05e9, 0x05ea, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
  31. };
  32.  
  33. static int
  34. mac_hebrew_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
  35. {
  36.   unsigned char c = *s;
  37.   if (c < 0x80) {
  38.     *pwc = (wchar_t) c;
  39.     return 1;
  40.   }
  41.   else if (c >= 0x80) {
  42.     unsigned short wc = mac_hebrew_2uni[c-0x80];
  43.     if (wc != 0xfffd) {
  44.       *pwc = (wchar_t) wc;
  45.       return 1;
  46.     }
  47.   }
  48.   return RET_ILSEQ;
  49. }
  50.  
  51. static const unsigned char mac_hebrew_page00[96] = {
  52.   0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
  53.   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */
  54.   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
  55.   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
  56.   0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x82, /* 0xc0-0xc7 */
  57.   0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
  58.   0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0xd0-0xd7 */
  59.   0x00, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
  60.   0x88, 0x87, 0x89, 0x8b, 0x8a, 0x8c, 0x00, 0x8d, /* 0xe0-0xe7 */
  61.   0x8f, 0x8e, 0x90, 0x91, 0x93, 0x92, 0x94, 0x95, /* 0xe8-0xef */
  62.   0x00, 0x96, 0x98, 0x97, 0x99, 0x9b, 0x9a, 0x00, /* 0xf0-0xf7 */
  63.   0x00, 0x9d, 0x9c, 0x9e, 0x9f, 0x00, 0x00, 0x00, /* 0xf8-0xff */
  64. };
  65. static const unsigned char mac_hebrew_page05[64] = {
  66.   0xd9, 0xdb, 0xda, 0xdf, 0xcf, 0xcd, 0xce, 0xcc, /* 0xb0-0xb7 */
  67.   0xcb, 0xdd, 0x00, 0xdc, 0xc6, 0x00, 0x00, 0xd8, /* 0xb8-0xbf */
  68.   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
  69.   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
  70.   0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xd0-0xd7 */
  71.   0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xd8-0xdf */
  72.   0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xe0-0xe7 */
  73.   0xf8, 0xf9, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
  74. };
  75. static const unsigned char mac_hebrew_page20[24] = {
  76.   0x00, 0x00, 0x00, 0xd0, 0xd1, 0x00, 0x00, 0x00, /* 0x10-0x17 */
  77.   0xd4, 0xd5, 0x00, 0x00, 0xd2, 0xd3, 0xc1, 0x00, /* 0x18-0x1f */
  78.   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc9, 0x00, /* 0x20-0x27 */
  79. };
  80. static const unsigned char mac_hebrew_pagefb[56] = {
  81.   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, /* 0x18-0x1f */
  82.   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
  83.   0x00, 0x00, 0xd6, 0xd7, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
  84.   0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, /* 0x30-0x37 */
  85.   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
  86.   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
  87.   0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
  88. };
  89.  
  90. static int
  91. mac_hebrew_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n)
  92. {
  93.   unsigned char c = 0;
  94.   if (wc < 0x0080) {
  95.     *r = wc;
  96.     return 1;
  97.   }
  98.   else if (wc >= 0x00a0 && wc < 0x0100)
  99.     c = mac_hebrew_page00[wc-0x00a0];
  100.   else if (wc >= 0x05b0 && wc < 0x05f0)
  101.     c = mac_hebrew_page05[wc-0x05b0];
  102.   else if (wc >= 0x2010 && wc < 0x2028)
  103.     c = mac_hebrew_page20[wc-0x2010];
  104.   else if (wc == 0x20aa)
  105.     c = 0xa6;
  106.   else if (wc >= 0xfb18 && wc < 0xfb50)
  107.     c = mac_hebrew_pagefb[wc-0xfb18];
  108.   if (c != 0) {
  109.     *r = c;
  110.     return 1;
  111.   }
  112.   return RET_ILSEQ;
  113. }
  114.